import axios from 'axios'

// FastGPT API配置
const FASTGPT_CONFIG = {
  // 直接设置 API 配置（InfinityFree 不支持环境变量）
  // 请将下面的值替换为您的实际 API 配置
  baseURL: import.meta.env.VITE_FASTGPT_API_URL || 'https://api.fastgpt.in/api/v1',
  apiKey: import.meta.env.VITE_FASTGPT_API_KEY || 'YOUR_FASTGPT_API_KEY_HERE',
  appId: import.meta.env.VITE_FASTGPT_APP_ID || 'YOUR_FASTGPT_APP_ID_HERE'
}

// 创建axios实例
const fastgptClient = axios.create({
  baseURL: FASTGPT_CONFIG.baseURL,
  timeout: 30000,
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${FASTGPT_CONFIG.apiKey}`
  }
})

/**
 * 调用FastGPT API生成古风诗句和情绪分析
 * @param {string} userInput - 用户输入的心语
 * @returns {Promise<Object>} - 包含诗句、情绪和分析的对象
 */
export const generatePoetryResponse = async (userInput) => {
  try {
    console.log('🚀 开始调用FastGPT API')
    console.log('📝 用户输入:', userInput)
    console.log('🔧 API配置:', {
      baseURL: FASTGPT_CONFIG.baseURL,
      hasApiKey: !!FASTGPT_CONFIG.apiKey,
      hasAppId: !!FASTGPT_CONFIG.appId,
      apiKeyPrefix: FASTGPT_CONFIG.apiKey ? FASTGPT_CONFIG.apiKey.substring(0, 10) + '...' : 'none'
    })

    // 检查API配置
    if (!FASTGPT_CONFIG.apiKey || !FASTGPT_CONFIG.appId) {
      console.warn('❌ FastGPT API配置不完整，使用模拟数据')
      return generateMockResponse(userInput)
    }

    // 构建发送给FastGPT的prompt
    const prompt = `你是一位温柔而博学的古代文人，擅长用情绪表达国风诗意，精通各种古诗创作技法。用户对你倾诉情绪，你要理解情绪，并用优雅古文回复一首短诗，并加上简单情绪注解。

用户心语：${userInput}

请按照以下格式回复：
诗句：[四句古风诗句，每句7字左右，表达用户的情绪，国风主题，能让八旬老妇都能听懂，诗读起来朗朗上口]
情绪：[用4个字概括情绪，如"喜而不狂"、"哀而不伤"等]
分析：[用现代文简单分析用户的情绪状态，50字左右]

示例：
诗句：春风十里不如你，柳絮飞舞情意浓。心语轻诉月如钩，诗意盎然梦中游。
情绪：喜而不狂
分析：您的话语中透露着淡淡的喜悦与期待，如春风拂面，温暖而不张扬。`

    // 生成唯一的chatId
    const chatId = `xinyu_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`

    const requestData = {
      chatId: chatId,
      stream: false,
      detail: false,
      messages: [
        {
          content: prompt,
          role: 'user'
        }
      ]
    }

    console.log('📤 发送API请求:', {
      url: '/v1/chat/completions',
      chatId: chatId,
      messageLength: prompt.length
    })

    const response = await fastgptClient.post('/v1/chat/completions', requestData)

    console.log('✅ API请求成功，状态码:', response.status)

    // 解析AI响应 - 兼容不同的响应格式
    console.log('FastGPT API响应:', response.data)

    let aiResponse = ''

    // 尝试不同的响应格式
    if (response.data.choices && response.data.choices[0] && response.data.choices[0].message) {
      // OpenAI格式
      aiResponse = response.data.choices[0].message.content
    } else if (response.data.data && response.data.data.responseData) {
      // FastGPT格式1
      aiResponse = response.data.data.responseData
    } else if (response.data.responseData) {
      // FastGPT格式2
      aiResponse = response.data.responseData
    } else if (response.data.content) {
      // 简单格式
      aiResponse = response.data.content
    } else if (typeof response.data === 'string') {
      // 直接字符串
      aiResponse = response.data
    } else {
      console.warn('未知的响应格式，使用模拟数据')
      return generateMockResponse(userInput)
    }

    console.log('提取的AI响应内容:', aiResponse)
    return parseAIResponse(aiResponse)

  } catch (error) {
    console.error('FastGPT API调用失败:', error)

    // 检查是否是API Key错误
    if (error.response?.data?.message?.includes('Key is error')) {
      console.error('❌ API Key错误：请使用应用特定的API Key，而不是账户API Key')
      console.error('📝 解决方法：')
      console.error('1. 进入FastGPT应用详情页面')
      console.error('2. 点击"API访问"或"外部使用"')
      console.error('3. 获取应用特定的API Key')
      console.error('4. 更新.env文件中的VITE_FASTGPT_API_KEY')
    }

    // 如果API调用失败，返回模拟数据
    return generateMockResponse(userInput)
  }
}

/**
 * 解析AI响应文本，提取诗句、情绪和分析
 * @param {string} responseText - AI返回的文本
 * @returns {Object} - 解析后的结构化数据
 */
const parseAIResponse = (responseText) => {
  try {
    console.log('开始解析AI响应:', responseText)

    if (!responseText || typeof responseText !== 'string') {
      console.warn('响应文本为空或格式错误')
      return generateMockResponse()
    }

    const lines = responseText.split('\n').filter(line => line.trim())

    let poem = ''
    let emotion = ''
    let analysis = ''

    for (const line of lines) {
      const trimmedLine = line.trim()

      if (trimmedLine.includes('诗句：') || trimmedLine.includes('诗句:')) {
        // 提取诗句部分
        const poemStart = lines.indexOf(line)
        const poemLines = []
        for (let i = poemStart; i < lines.length; i++) {
          const currentLine = lines[i].trim()
          if (currentLine.includes('情绪：') || currentLine.includes('情绪:')) break
          if (currentLine.includes('诗句：') || currentLine.includes('诗句:')) {
            // 如果诗句在同一行
            const poemContent = currentLine.replace(/诗句[：:]\s*/, '')
            if (poemContent) poemLines.push(poemContent)
            continue
          }
          if (currentLine) poemLines.push(currentLine)
        }
        poem = poemLines.join('\n')
      } else if (trimmedLine.includes('情绪：') || trimmedLine.includes('情绪:')) {
        emotion = trimmedLine.replace(/情绪[：:]\s*/, '').trim()
      } else if (trimmedLine.includes('分析：') || trimmedLine.includes('分析:')) {
        analysis = trimmedLine.replace(/分析[：:]\s*/, '').trim()
      }
    }

    // 如果没有找到标准格式，尝试智能解析
    if (!poem && !emotion && !analysis) {
      console.log('未找到标准格式，尝试智能解析')
      const result = intelligentParse(responseText)
      if (result) return result
    }

    const result = {
      poem: poem || '心语如诗意如画，\n情深不语自成章。\n古韵今声相和鸣，\n诗意人生共徜徉。',
      emotion: emotion || '诗意盎然',
      analysis: analysis || '您的心语充满诗意，让人感受到内心的丰富情感。'
    }

    console.log('解析结果:', result)
    return result

  } catch (error) {
    console.error('解析AI响应失败:', error)
    return generateMockResponse()
  }
}

// 智能解析函数，用于处理非标准格式的响应
const intelligentParse = (text) => {
  try {
    // 尝试提取诗句（通常是4行，每行7-10字）
    const lines = text.split('\n').filter(line => line.trim())
    const poemLines = []

    for (const line of lines) {
      const trimmed = line.trim()
      // 诗句特征：中文字符，长度适中，可能包含标点
      if (trimmed.length >= 5 && trimmed.length <= 15 && /[\u4e00-\u9fa5]/.test(trimmed)) {
        poemLines.push(trimmed)
        if (poemLines.length >= 4) break
      }
    }

    if (poemLines.length >= 2) {
      return {
        poem: poemLines.join('\n'),
        emotion: '诗意盎然',
        analysis: '从您的心语中感受到深深的诗意与情感。'
      }
    }

    return null
  } catch (error) {
    console.error('智能解析失败:', error)
    return null
  }
}

/**
 * 生成模拟响应（用于API不可用时）
 * @param {string} userInput - 用户输入
 * @returns {Object} - 模拟的响应数据
 */
const generateMockResponse = (userInput = '') => {
  const mockResponses = [
    {
      poem: "春风十里不如你，\n柳絮飞舞情意浓。\n心语轻诉月如钩，\n诗意盎然梦中游。",
      emotion: "喜而不狂",
      analysis: "您的话语中透露着淡淡的喜悦与期待，如春风拂面，温暖而不张扬。这份情感恰如古人所言'喜而不狂'，既有内心的欢愉，又保持着优雅的节制。"
    },
    {
      poem: "秋叶飘零思绪长，\n月明星稀夜未央。\n心事如潮涌不息，\n诗词寄情慰彷徨。",
      emotion: "思而不忧",
      analysis: "从您的言语中感受到深深的思考与感悟，如秋夜静思，虽有些许惆怅，但更多的是对生活的深度思考和理解。"
    },
    {
      poem: "山高水长情不变，\n云卷云舒心自安。\n人生如梦亦如诗，\n淡然处世乐无边。",
      emotion: "淡然自若",
      analysis: "您展现出一种超然的人生态度，如山间清风，淡泊宁静。这种心境让人敬佩，体现了深厚的人生智慧。"
    }
  ]
  
  // 根据输入长度和内容选择合适的响应
  const responseIndex = userInput.length % mockResponses.length
  return mockResponses[responseIndex]
}

export default {
  generatePoetryResponse
}
